/* this ALWAYS GENERATED file contains the definitions for the interfaces */


/* File created by MIDL compiler version 5.01.0164 */
/* at Wed Jun 30 19:13:26 2004
 */
/* Compiler settings for SASExtensions.idl:
    Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
    error checks: allocation ref bounds_check enum stub_data 
*/
//@@MIDL_FILE_HEADING(  )


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 440
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __SASExtensions_h__
#define __SASExtensions_h__

#ifdef __cplusplus
extern "C"{
#endif 

/* Forward Declarations */ 

#ifndef __ISASDataSetInfo_FWD_DEFINED__
#define __ISASDataSetInfo_FWD_DEFINED__
typedef interface ISASDataSetInfo ISASDataSetInfo;
#endif 	/* __ISASDataSetInfo_FWD_DEFINED__ */


#ifndef __ISASDataSetInfo90_FWD_DEFINED__
#define __ISASDataSetInfo90_FWD_DEFINED__
typedef interface ISASDataSetInfo90 ISASDataSetInfo90;
#endif 	/* __ISASDataSetInfo90_FWD_DEFINED__ */


#ifndef __ISASColumnsInfo_FWD_DEFINED__
#define __ISASColumnsInfo_FWD_DEFINED__
typedef interface ISASColumnsInfo ISASColumnsInfo;
#endif 	/* __ISASColumnsInfo_FWD_DEFINED__ */


#ifndef __ISASColumnsInfo_2_FWD_DEFINED__
#define __ISASColumnsInfo_2_FWD_DEFINED__
typedef interface ISASColumnsInfo_2 ISASColumnsInfo_2;
#endif 	/* __ISASColumnsInfo_2_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "ocidl.h"

void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void __RPC_FAR * ); 

/* interface __MIDL_itf_SASExtensions_0000 */
/* [local] */ 

#ifdef DBINITCONSTANTS
EXTERN_C const IID DBPROPSET_SAS_ROWSET = {0x32AA6532,0xE10F,0x11d0,{0x9F,0x52,0x00,0x60,0x97,0xE0,0x77,0xE9}};
EXTERN_C const IID DBPROPSET_SAS_DBINIT = {0x4b0128eb,0xeb5a,0x11d1,{0x9f,0x92,0x0,0x60,0x97,0x5b,0x47,0xd2}};
EXTERN_C const IID DBPROPSET_SAS_DATASOURCEINFO = {0x6e7e3720, 0x6d05, 0x11d2, {0xb9, 0x4d, 0x0, 0xc0, 0x4f, 0x81, 0xd3, 0xcd}};
EXTERN_C const IID DBPROPSET_SAS_SESSION = {0x0c4c3ba0, 0x0a11, 0x11d3, {0xb9, 0x5b, 0x0, 0xc0, 0x4f, 0x7b, 0x07, 0x45}};
#else
EXTERN_C const IID DBPROPSET_SAS_ROWSET;
EXTERN_C const IID DBPROPSET_SAS_DBINIT;
EXTERN_C const IID DBPROPSET_SAS_DATASOURCEINFO;
EXTERN_C const IID DBPROPSET_SAS_SESSION;
#endif
// Set the Struct Packing
#include <pshpack8.h>
typedef struct  tagSASDATASETINFO
    {
    LONG lLogicalRecordCount;
    LONG lPhysicalRecordCount;
    LONG lRecordLength;
    DATE dDateCreated;
    DATE dDateModified;
    LPOLESTR pwszLabel;
    LPOLESTR pwszCompressionRoutine;
    BOOL fIsIndexed;
    }	SASDATASETINFO;

typedef struct  tagSASDATASETINFO90
    {
    LONGLONG llLogicalRecordCount;
    LONGLONG llPhysicalRecordCount;
    LONG lRecordLength;
    DATE dDateCreated;
    DATE dDateModified;
    LPOLESTR pwszLabel;
    LPOLESTR pwszCompressionRoutine;
    BOOL fIsIndexed;
    }	SASDATASETINFO90;

typedef struct  tagSASCOLUMNINFO
    {
    LPOLESTR pwszColDesc;
    LPOLESTR pwszFmtName;
    LPOLESTR pwszIFmtName;
    ULONG iOrdinal;
    SHORT iFmtLength;
    SHORT iFmtDecimal;
    SHORT iIFmtLength;
    SHORT iIFmtDecimal;
    SHORT iSortInfo;
    BOOL fIndexed;
    }	SASCOLUMNINFO;

typedef struct  tagSASCOLUMNDEF
    {
    ULONG iOrdinal;
    LPOLESTR pwszName;
    LPOLESTR pwszLabel;
    LPOLESTR pwszFmtName;
    LPOLESTR pwszIFmtName;
    SHORT iFmtLength;
    SHORT iFmtDecimal;
    SHORT iIFmtLength;
    SHORT iIFmtDecimal;
    }	SASCOLUMNDEF;

typedef /* [public][public] */ 
enum __MIDL___MIDL_itf_SASExtensions_0000_0001
    {	SASFMT_FORMAT	= 0,
	SASFMT_INFORMAT	= SASFMT_FORMAT + 1
    }	SASFMTENUM;

typedef struct  tagSASFORMAT
    {
    SASFMTENUM wType;
    LPOLESTR pwszName;
    SHORT iLength;
    SHORT iDecimals;
    }	SASFORMAT;


enum SASDBPROPENUM
    {	DBPROP_SAS_INIT_WORKSPACE	= 0x100000L,
	DBPROP_SAS_PATH	= DBPROP_SAS_INIT_WORKSPACE + 1,
	DBPROP_SAS_ENGINE	= DBPROP_SAS_PATH + 1,
	DBPROP_SAS_LIBOPTS	= DBPROP_SAS_ENGINE + 1,
	DBPROP_SAS_INIT_WORKSPACEID	= DBPROP_SAS_LIBOPTS + 1,
	DBPROP_SAS_INIT_FILEFORMAT	= DBPROP_SAS_INIT_WORKSPACEID + 1,
	DBPROP_SAS_INIT_SERVERPASSWORD	= DBPROP_SAS_INIT_FILEFORMAT + 1,
	DBPROP_SAS_DEFAULTFILEFORMAT	= DBPROP_SAS_INIT_SERVERPASSWORD + 1,
	DBPROP_SAS_SQLENGINE	= DBPROP_SAS_DEFAULTFILEFORMAT + 1,
	DBPROP_SAS_SQLCONNECTIONSTRING	= DBPROP_SAS_SQLENGINE + 1,
	DBPROP_SAS_OPTIMISTICLOCKING	= DBPROP_SAS_SQLCONNECTIONSTRING + 1,
	DBPROP_SAS_FORMATS	= DBPROP_SAS_OPTIMISTICLOCKING + 1,
	DBPROP_SAS_PT2DBPW	= DBPROP_SAS_FORMATS + 1,
	DBPROP_SAS_INIT_SERVERRELEASE	= DBPROP_SAS_PT2DBPW + 1,
	DBPROP_SAS_WHERE	= DBPROP_SAS_INIT_SERVERRELEASE + 1,
	DBPROP_SAS_INIT_LOGICALNAME	= DBPROP_SAS_WHERE + 1,
	DBPROP_SAS_INIT_PORT	= DBPROP_SAS_INIT_LOGICALNAME + 1,
	DBPROP_SAS_INIT_SERVICENAME	= DBPROP_SAS_INIT_PORT + 1,
	DBPROP_SAS_INIT_MACHINEDNSNAME	= DBPROP_SAS_INIT_SERVICENAME + 1,
	DBPROP_SAS_INIT_PROTOCOL	= DBPROP_SAS_INIT_MACHINEDNSNAME + 1,
	DBPROP_SAS_BLANKPADDING	= DBPROP_SAS_INIT_PROTOCOL + 1,
	DBPROP_SAS_READPASSWORD	= DBPROP_SAS_BLANKPADDING + 1,
	DBPROP_SAS_WRITEPASSWORD	= DBPROP_SAS_READPASSWORD + 1,
	DBPROP_SAS_ALTERPASSWORD	= DBPROP_SAS_WRITEPASSWORD + 1,
	DBPROP_SAS_INFORMATS	= DBPROP_SAS_ALTERPASSWORD + 1,
	DBPROP_SAS_FMTERR	= DBPROP_SAS_INFORMATS + 1,
	DBPROP_SAS_PAGESIZE	= DBPROP_SAS_FMTERR + 1,
	DBPROP_SAS_INIT_SERVER	= DBPROP_SAS_PAGESIZE + 1,
	DBPROP_SAS_INIT_VERSION	= DBPROP_SAS_INIT_SERVER + 1,
	DBPROP_SAS_INIT_DEFAULTVERSION	= DBPROP_SAS_INIT_VERSION + 1,
	DBPROP_SAS_INIT_SERVERTYPE	= DBPROP_SAS_INIT_DEFAULTVERSION + 1,
	DBPROP_SAS_INIT_LOCALSERVER	= DBPROP_SAS_INIT_SERVERTYPE + 1,
	DBPROP_SAS_INIT_SASEXE	= DBPROP_SAS_INIT_LOCALSERVER + 1,
	DBPROP_SAS_INIT_SASPARAMETERS	= DBPROP_SAS_INIT_SASEXE + 1,
	DBPROP_SAS_INIT_SASWORKINGDIR	= DBPROP_SAS_INIT_SASPARAMETERS + 1,
	DBPROP_SAS_NLSOPTS	= DBPROP_SAS_INIT_SASWORKINGDIR + 1,
	DBPROP_SAS_PHYSICALPOSITIONING	= DBPROP_SAS_NLSOPTS + 1,
	DBPROP_SAS_INIT_CELLCACHESIZE	= DBPROP_SAS_PHYSICALPOSITIONING + 1
    };
// Matching poppack for pshpack8.h
#include <poppack.h>


extern RPC_IF_HANDLE __MIDL_itf_SASExtensions_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_SASExtensions_0000_v0_0_s_ifspec;

#ifndef __ISASDataSetInfo_INTERFACE_DEFINED__
#define __ISASDataSetInfo_INTERFACE_DEFINED__

/* interface ISASDataSetInfo */
/* [object][unique][helpstring][uuid] */ 


EXTERN_C const IID IID_ISASDataSetInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("FC492DBA-2EA3-11d1-9F55-0060975B47D2")
    ISASDataSetInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetDataSetInfo( 
            /* [out] */ SASDATASETINFO __RPC_FAR *__RPC_FAR *pDataSetInfo,
            /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordCounts( 
            /* [out] */ LONG __RPC_FAR *plLogicalRecordCount,
            /* [out] */ LONG __RPC_FAR *plPhysicalRecordCount) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISASDataSetInfoVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
            ISASDataSetInfo __RPC_FAR * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
            ISASDataSetInfo __RPC_FAR * This);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
            ISASDataSetInfo __RPC_FAR * This);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDataSetInfo )( 
            ISASDataSetInfo __RPC_FAR * This,
            /* [out] */ SASDATASETINFO __RPC_FAR *__RPC_FAR *pDataSetInfo,
            /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRecordCounts )( 
            ISASDataSetInfo __RPC_FAR * This,
            /* [out] */ LONG __RPC_FAR *plLogicalRecordCount,
            /* [out] */ LONG __RPC_FAR *plPhysicalRecordCount);
        
        END_INTERFACE
    } ISASDataSetInfoVtbl;

    interface ISASDataSetInfo
    {
        CONST_VTBL struct ISASDataSetInfoVtbl __RPC_FAR *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISASDataSetInfo_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ISASDataSetInfo_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ISASDataSetInfo_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ISASDataSetInfo_GetDataSetInfo(This,pDataSetInfo,ppStringsBuffer)	\
    (This)->lpVtbl -> GetDataSetInfo(This,pDataSetInfo,ppStringsBuffer)

#define ISASDataSetInfo_GetRecordCounts(This,plLogicalRecordCount,plPhysicalRecordCount)	\
    (This)->lpVtbl -> GetRecordCounts(This,plLogicalRecordCount,plPhysicalRecordCount)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE ISASDataSetInfo_GetDataSetInfo_Proxy( 
    ISASDataSetInfo __RPC_FAR * This,
    /* [out] */ SASDATASETINFO __RPC_FAR *__RPC_FAR *pDataSetInfo,
    /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);


void __RPC_STUB ISASDataSetInfo_GetDataSetInfo_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ISASDataSetInfo_GetRecordCounts_Proxy( 
    ISASDataSetInfo __RPC_FAR * This,
    /* [out] */ LONG __RPC_FAR *plLogicalRecordCount,
    /* [out] */ LONG __RPC_FAR *plPhysicalRecordCount);


void __RPC_STUB ISASDataSetInfo_GetRecordCounts_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ISASDataSetInfo_INTERFACE_DEFINED__ */


#ifndef __ISASDataSetInfo90_INTERFACE_DEFINED__
#define __ISASDataSetInfo90_INTERFACE_DEFINED__

/* interface ISASDataSetInfo90 */
/* [object][unique][helpstring][uuid] */ 


EXTERN_C const IID IID_ISASDataSetInfo90;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8F8FDB36-6255-450f-A059-EEF8A7863C4B")
    ISASDataSetInfo90 : public ISASDataSetInfo
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetDataSetInfo_2( 
            /* [out] */ SASDATASETINFO90 __RPC_FAR *__RPC_FAR *pDataSetInfo,
            /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetRecordCounts_2( 
            /* [out] */ LONGLONG __RPC_FAR *pllLogicalRecordCount,
            /* [out] */ LONGLONG __RPC_FAR *pllPhysicalRecordCount) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISASDataSetInfo90Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
            ISASDataSetInfo90 __RPC_FAR * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
            ISASDataSetInfo90 __RPC_FAR * This);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
            ISASDataSetInfo90 __RPC_FAR * This);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDataSetInfo )( 
            ISASDataSetInfo90 __RPC_FAR * This,
            /* [out] */ SASDATASETINFO __RPC_FAR *__RPC_FAR *pDataSetInfo,
            /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRecordCounts )( 
            ISASDataSetInfo90 __RPC_FAR * This,
            /* [out] */ LONG __RPC_FAR *plLogicalRecordCount,
            /* [out] */ LONG __RPC_FAR *plPhysicalRecordCount);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetDataSetInfo_2 )( 
            ISASDataSetInfo90 __RPC_FAR * This,
            /* [out] */ SASDATASETINFO90 __RPC_FAR *__RPC_FAR *pDataSetInfo,
            /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetRecordCounts_2 )( 
            ISASDataSetInfo90 __RPC_FAR * This,
            /* [out] */ LONGLONG __RPC_FAR *pllLogicalRecordCount,
            /* [out] */ LONGLONG __RPC_FAR *pllPhysicalRecordCount);
        
        END_INTERFACE
    } ISASDataSetInfo90Vtbl;

    interface ISASDataSetInfo90
    {
        CONST_VTBL struct ISASDataSetInfo90Vtbl __RPC_FAR *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISASDataSetInfo90_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ISASDataSetInfo90_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ISASDataSetInfo90_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ISASDataSetInfo90_GetDataSetInfo(This,pDataSetInfo,ppStringsBuffer)	\
    (This)->lpVtbl -> GetDataSetInfo(This,pDataSetInfo,ppStringsBuffer)

#define ISASDataSetInfo90_GetRecordCounts(This,plLogicalRecordCount,plPhysicalRecordCount)	\
    (This)->lpVtbl -> GetRecordCounts(This,plLogicalRecordCount,plPhysicalRecordCount)


#define ISASDataSetInfo90_GetDataSetInfo_2(This,pDataSetInfo,ppStringsBuffer)	\
    (This)->lpVtbl -> GetDataSetInfo_2(This,pDataSetInfo,ppStringsBuffer)

#define ISASDataSetInfo90_GetRecordCounts_2(This,pllLogicalRecordCount,pllPhysicalRecordCount)	\
    (This)->lpVtbl -> GetRecordCounts_2(This,pllLogicalRecordCount,pllPhysicalRecordCount)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE ISASDataSetInfo90_GetDataSetInfo_2_Proxy( 
    ISASDataSetInfo90 __RPC_FAR * This,
    /* [out] */ SASDATASETINFO90 __RPC_FAR *__RPC_FAR *pDataSetInfo,
    /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);


void __RPC_STUB ISASDataSetInfo90_GetDataSetInfo_2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE ISASDataSetInfo90_GetRecordCounts_2_Proxy( 
    ISASDataSetInfo90 __RPC_FAR * This,
    /* [out] */ LONGLONG __RPC_FAR *pllLogicalRecordCount,
    /* [out] */ LONGLONG __RPC_FAR *pllPhysicalRecordCount);


void __RPC_STUB ISASDataSetInfo90_GetRecordCounts_2_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ISASDataSetInfo90_INTERFACE_DEFINED__ */


#ifndef __ISASColumnsInfo_INTERFACE_DEFINED__
#define __ISASColumnsInfo_INTERFACE_DEFINED__

/* interface ISASColumnsInfo */
/* [object][unique][helpstring][uuid] */ 


EXTERN_C const IID IID_ISASColumnsInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8E95ADA0-29D2-11d1-9F5B-0060970E77E9")
    ISASColumnsInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetColumnInfo( 
            /* [out][in] */ ULONG __RPC_FAR *pcColumns,
            /* [out][size_is][size_is] */ SASCOLUMNINFO __RPC_FAR *__RPC_FAR *prgInfo,
            /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISASColumnsInfoVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
            ISASColumnsInfo __RPC_FAR * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
            ISASColumnsInfo __RPC_FAR * This);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
            ISASColumnsInfo __RPC_FAR * This);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColumnInfo )( 
            ISASColumnsInfo __RPC_FAR * This,
            /* [out][in] */ ULONG __RPC_FAR *pcColumns,
            /* [out][size_is][size_is] */ SASCOLUMNINFO __RPC_FAR *__RPC_FAR *prgInfo,
            /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
        
        END_INTERFACE
    } ISASColumnsInfoVtbl;

    interface ISASColumnsInfo
    {
        CONST_VTBL struct ISASColumnsInfoVtbl __RPC_FAR *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISASColumnsInfo_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ISASColumnsInfo_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ISASColumnsInfo_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ISASColumnsInfo_GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer)	\
    (This)->lpVtbl -> GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE ISASColumnsInfo_GetColumnInfo_Proxy( 
    ISASColumnsInfo __RPC_FAR * This,
    /* [out][in] */ ULONG __RPC_FAR *pcColumns,
    /* [out][size_is][size_is] */ SASCOLUMNINFO __RPC_FAR *__RPC_FAR *prgInfo,
    /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);


void __RPC_STUB ISASColumnsInfo_GetColumnInfo_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ISASColumnsInfo_INTERFACE_DEFINED__ */


#ifndef __ISASColumnsInfo_2_INTERFACE_DEFINED__
#define __ISASColumnsInfo_2_INTERFACE_DEFINED__

/* interface ISASColumnsInfo_2 */
/* [object][unique][helpstring][uuid] */ 


EXTERN_C const IID IID_ISASColumnsInfo_2;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("A629D9F8-BD00-48DE-ABFC-AA40C4C61BDC")
    ISASColumnsInfo_2 : public ISASColumnsInfo
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetColumnDefs( 
            /* [in] */ ULONG cColumns,
            /* [size_is][in] */ SASCOLUMNDEF __RPC_FAR *rgDef,
            /* [in] */ OLECHAR __RPC_FAR *pStringsBuffer,
            /* [out] */ HRESULT __RPC_FAR *__RPC_FAR *prgStatus) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct ISASColumnsInfo_2Vtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *QueryInterface )( 
            ISASColumnsInfo_2 __RPC_FAR * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *AddRef )( 
            ISASColumnsInfo_2 __RPC_FAR * This);
        
        ULONG ( STDMETHODCALLTYPE __RPC_FAR *Release )( 
            ISASColumnsInfo_2 __RPC_FAR * This);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *GetColumnInfo )( 
            ISASColumnsInfo_2 __RPC_FAR * This,
            /* [out][in] */ ULONG __RPC_FAR *pcColumns,
            /* [out][size_is][size_is] */ SASCOLUMNINFO __RPC_FAR *__RPC_FAR *prgInfo,
            /* [out] */ OLECHAR __RPC_FAR *__RPC_FAR *ppStringsBuffer);
        
        HRESULT ( STDMETHODCALLTYPE __RPC_FAR *SetColumnDefs )( 
            ISASColumnsInfo_2 __RPC_FAR * This,
            /* [in] */ ULONG cColumns,
            /* [size_is][in] */ SASCOLUMNDEF __RPC_FAR *rgDef,
            /* [in] */ OLECHAR __RPC_FAR *pStringsBuffer,
            /* [out] */ HRESULT __RPC_FAR *__RPC_FAR *prgStatus);
        
        END_INTERFACE
    } ISASColumnsInfo_2Vtbl;

    interface ISASColumnsInfo_2
    {
        CONST_VTBL struct ISASColumnsInfo_2Vtbl __RPC_FAR *lpVtbl;
    };

    

#ifdef COBJMACROS


#define ISASColumnsInfo_2_QueryInterface(This,riid,ppvObject)	\
    (This)->lpVtbl -> QueryInterface(This,riid,ppvObject)

#define ISASColumnsInfo_2_AddRef(This)	\
    (This)->lpVtbl -> AddRef(This)

#define ISASColumnsInfo_2_Release(This)	\
    (This)->lpVtbl -> Release(This)


#define ISASColumnsInfo_2_GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer)	\
    (This)->lpVtbl -> GetColumnInfo(This,pcColumns,prgInfo,ppStringsBuffer)


#define ISASColumnsInfo_2_SetColumnDefs(This,cColumns,rgDef,pStringsBuffer,prgStatus)	\
    (This)->lpVtbl -> SetColumnDefs(This,cColumns,rgDef,pStringsBuffer,prgStatus)

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE ISASColumnsInfo_2_SetColumnDefs_Proxy( 
    ISASColumnsInfo_2 __RPC_FAR * This,
    /* [in] */ ULONG cColumns,
    /* [size_is][in] */ SASCOLUMNDEF __RPC_FAR *rgDef,
    /* [in] */ OLECHAR __RPC_FAR *pStringsBuffer,
    /* [out] */ HRESULT __RPC_FAR *__RPC_FAR *prgStatus);


void __RPC_STUB ISASColumnsInfo_2_SetColumnDefs_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __ISASColumnsInfo_2_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_SASExtensions_0247 */
/* [local] */ 

typedef /* [public] */ 
enum __MIDL___MIDL_itf_SASExtensions_0247_0001
    {	saUpdate	= 0,
	saView	= saUpdate + 1,
	saExperimental	= saView + 1,
	saReserved	= saExperimental + 1,
	saNumberOfFeatures	= saReserved + 1
    }	sasadFeature;

typedef /* [public] */ 
enum __MIDL___MIDL_itf_SASExtensions_0247_0002
    {	saNotAFeature	= -1,
	saDisabled	= saNotAFeature + 1,
	saEnabled	= saDisabled + 1
    }	sasadFeatureState;

typedef /* [public] */ 
enum __MIDL___MIDL_itf_SASExtensions_0247_0003
    {	CacheAllRows	= -1,
	CacheDisabled	= 0
    }	sasadPageSize;

typedef /* [public] */ 
enum __MIDL___MIDL_itf_SASExtensions_0247_0004
    {	CS_NONE	= 0,
	CS_ASCII	= CS_NONE + 1,
	CS_WASCII	= CS_ASCII + 1,
	CS_MBCS	= CS_WASCII + 1,
	CS_UNICODE	= CS_MBCS + 1
    }	sasadCharacterSet;



extern RPC_IF_HANDLE __MIDL_itf_SASExtensions_0247_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_SASExtensions_0247_v0_0_s_ifspec;

/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif
